This invention relates to digital signal processing and in particular to an apparatus and method for very accurately approximating a magnitude and phase of a complex number given its real and imaginary components.
Determining the magnitude of a complex number such as I+jQ which is a common calculation in radar signal processing applications, has been accomplished by several methods such as CORDIC computing techniques, single interval linear approximation, multiple interval piece-wise linear approximation and scale factor-logarithm approximation.
The term CORDIC was originally defined as standing for COordinate Rotation DIgital Computer by Jack E. Volder in the September 1959 issue of IRE transactions on Electronic Computers in an article titled, "The CORDIC Computing Technique". The CORDIC computing technique was developed especially for use in a real-time digital computer where the majority of the computation involved the discontinuous, programmed solution of the trigonometric relationships of navigation equations and a high solution rate for the trigonometric relationships of coordinate transformation. The basic computing technique in CORDIC is a step-by-step sequence of pseudo rotations which result in an over-all rotation through a given angle or result in a final angular argument of zero. The CORDIC computing technique and variations thereof have been applied in many signal processing applications to find an approximate magnitude of a complex number by means of a process of successive rotations of its representative vector towards one of the real or imaginary component axes. Some drawbacks of CORDIC techniques for magnitude approximation are: complexity of implementation, growth in the number of binary bits required to obtain acceptable accuracy, and excess time required to perform each of the successive iterations.
A second method, widely used in radar signal processing, is single-interval linear approximation. Here, the real and imaginary components, X and Y are compared and the greater one is multiplied by a factor K.sub.G and added to a factor K.sub.L multiplied by the lesser one. When no actual multiplier is available, K.sub.G is unity and K.sub.L is chosen as 1/4, 3/8, or 1/2 to allow implementation with adders. Drawbacks include a need for comparison and multiplexing between X and Y, and poor accuracy of about 3% RMS error (over all angles) and greater than 10% peak error.
A third method as shown in a patent to William M. Vojir et al., U.S. Pat. No. 4,599,701 describes a complex magnitude computing circuit that implements piece-wise linear approximations to achieve high precision without the need for iteration and its processing burden. It is a generalization of the second method to multiple intervals wherein the greater (multiplied by a constant) and lesser components are further compared to determine which of two or more sets of constants K.sub.G and K.sub.L should be used in the multiplications. The increased accuracy, compared with the second method, is at the expense of greater complexity and time delay of the additional comparisons.
A fourth method as shown in a patent to Anthony J. Jagodnik, Jr. et al., U.S. Pat. No. 4,747,067 describes a vector magnitude multiple sector approximating circuit which generates a logarithm of the absolute value of the real component and the imaginary component and multiplies these logarithms by a scaling constant pair selected by an address formed by these logarithms forming two products which are added together to form the magnitude. The constant pair is preselected for each one of a plurality of regions within a quadrant of a coordinate system representing a complex plane, and the preselected set of constant pairs for the quadrant is applicable to all quadrants. This method provides a noniterative algorithm with no feedback required, and it is amenable to pipelined implementation with throughput up to one approximation performed per clock cycle in a fully parallel implementation. An accuracy of 0.57% average RMS error (of the value) is achieved with this approach.
The first three of these methods effectively require determination of the phase angle of the input vector to varying degrees of precision. Mechanization, even to simply determine the octant of the angle, requires a "pass the maximum to one destination and the minimum to another" function with considerable complexity of the requisite comparison and multiplexing hardware which must handle all bits of each component. Read-only memories (ROMs) used with the fourth method may not be conveniently implemented on a VLSI chip, and very high accuracies in the range of 0.003% maximum error are not obtainable. It is often desireable to not have to store data by having a pipelined structure as with the CORDIC technique.